﻿using ARC.AliYun.SMSService.Models;
using ARC.AliYun.SMSService.Models.SimpleSmsModels;
using System.Collections.Generic;

namespace ARC.AliYun.SMSService.Interfaces
{
    public interface ISimpleSms
    {
        /// <summary>
        /// 添加普通短信签名
        /// </summary>
        /// <param name="signName">签名名称</param>
        /// <param name="signSource">0：企事业单位的全称或简称。1：工信部备案网站的全称或简称。2：APP应用的全称或简称。3：公众号或小程序的全称或简称。4：电商平台店铺名的全称或简称。5：商标名的全称或简称</param>
        /// <param name="remark">短信签名申请说明。请在申请说明中详细描述您的业务使用场景，申请工信部备案网站的全称或简称请在此处填写域名，长度不超过200个字符</param>
        /// <param name="signFileList">签名文件列表</param>
        /// <returns></returns>
        public AddAndDelSimpleSmsSingResponse AddSimpleSmsSign(string signName, string signSource, string remark, Dictionary<string, string> signFileList);
        /// <summary>
        /// 删除短信签名
        /// </summary>
        /// <param name="signName">短信签名</param>
        /// <returns></returns>
        public AddAndDelSimpleSmsSingResponse DeleteSimpleSmsSign(string signName);

        /// <summary>
        /// 查询单条短信签名状态
        /// </summary>
        /// <param name="signName"></param>
        /// <returns></returns>
        public QuerySimpleSmsSinResponse QuerySimpleSmsSign(string signName);
        /// <summary>
        /// 修改单条签名信息
        /// </summary>
        /// <param name="signName">签名名称</param>
        /// <param name="signSource">：企事业单位的全称或简称。1：工信部备案网站的全称或简称。2：APP应用的全称或简称。3：公众号或小程序的全称或简称。4：电商平台店铺名的全称或简称。5：商标名的全称或简称</param>
        /// <param name="remark">备注</param>
        /// <param name="signFileList">文件</param>
        /// <returns></returns>
        public AddAndDelSimpleSmsSingResponse ModifySimpleSmsSign(string signName, string signSource,string remark,Dictionary<string, string> signFileList);

        /// <summary>
        /// 添加普通短信模板
        /// </summary>
        /// <param name="templateType">短信类型。其中：0：验证码。1：短信通知。2：推广短信。3：国际/港澳台消息。</param>
        /// <param name="templateName">模板名称</param>
        /// <param name="templateContent">模板内容</param>
        /// <param name="remark">短信模板申请说明。</param>
        /// <returns></returns>
        public AddAndDelSimpleSmsTemplateResponse AddSimpleSmsTemplate(int templateType, string templateName,
            string templateContent, string remark);
        /// <summary>
        /// 删除短信模板
        /// </summary>
        /// <param name="templateName">模板名称</param>
        /// <returns></returns>
        public AddAndDelSimpleSmsTemplateResponse DeleteSimpleSmsTemplate(string templateName);
        /// <summary>
        /// 查询单条普通短信模板
        /// </summary>
        /// <param name="templateCode"></param>
        /// <returns></returns>
        public QuerySimpleSmsTemplateResponse QuerySimpleSmsTemplate(string templateCode);
        /// <summary>
        /// 修改模板
        /// </summary>
        /// <param name="templateType"></param>
        /// <param name="templateName"></param>
        /// <param name="templateCode"></param>
        /// <param name="templateContent"></param>
        /// <param name="remark"></param>
        /// <returns></returns>
        public AddAndDelSimpleSmsTemplateResponse ModifySimpleSmsTemplate(int templateType, string templateName,
            string templateCode, string templateContent, string remark);
        /// <summary>
        /// 短信发送记录和发送状态
        /// </summary>
        /// <param name="phoneNumber">接收短信的手机号码。</param>
        /// <param name="sendDate">短信发送日期，支持查询最近30天的记录。格式为yyyyMMdd，例如20181225。</param>
        /// <param name="pageSize">分页查看发送记录，指定每页显示的短信记录数量。取值范围为1 ~50</param>
        /// <param name="currentPage">分页查看发送记录，指定发送记录的的当前页码</param>
        public QuerySendSmsDetails QueryDigitalSendDetails(string phoneNumber, string sendDate, int pageSize,
            int currentPage);
        /// <summary>
        /// 发送普通短信
        /// </summary>
        /// <param name="phoneNumbers">电话号码</param>
        /// <param name="signName">签名名称</param>
        /// <param name="templateCode">模板Code</param>
        /// <param name="templateParam">模板参数</param>
        /// <returns></returns>
        public SendSmsResponse SendSimpleSms(string phoneNumbers, string signName, string templateCode, string templateParam);
        /// <summary>
        /// 批量发送数字短信
        /// </summary>
        /// <param name="phoneNumbers"></param>
        /// <param name="signNameJson"></param>
        /// <param name="templateCode"></param>
        /// <param name="templateParam"></param>
        /// <returns></returns>
        public SendSmsResponse SendSimpleSmsBatch(List<string> phoneNumbers, List<string> signNameJson, string templateCode, List<Dictionary<string, string>> templateParam);
    }
}
